let glob = require('glob')
const CompressionPlugin = require('compression-webpack-plugin');//引入gzip压缩插件

//配置pages多页面获取当前文件夹下的html和js
function getEntry(globPath) {
  let entries = {}, tmp, htmls = {};
  // 读取src/pages/**/底下所有的html文件
  glob.sync(globPath + 'html').forEach(function (entry) {
    tmp = entry.split('/').splice(-3);
    htmls[tmp[1]] = entry
  })
  // 读取src/pages/**/底下所有的js文件
  glob.sync(globPath + 'js').forEach(function (entry) {
    tmp = entry.split('/').splice(-3);
    entries[tmp[1]] = {
      entry,
      template: htmls[tmp[1]] ? htmls[tmp[1]] : 'index.html', //  当前目录没有有html则以共用的public/index.html作为模板
      filename: tmp[1] + '.html'   //  以文件夹名称.html作为访问地址
    };
  });
  console.log(entries)
  return entries;
}

let htmls = getEntry('./src/pages/**/*.');
module.exports = {
  pages: htmls,
  publicPath: '/ewt-view',           // TODO 可以使用 ./ 解决打包之后静态文件路径404的问题
  outputDir: 'ewt-view',        //  打包后的文件夹名称，默认dist
  devServer: {
    open: true,             //  npm run serve 自动打开浏览器
    index: '/main.html',    //  默认启动页面
    //线上版本需要在nginx中配置
    /*
    *   #API接口
        location /app {
            proxy_set_header Host $host;
            proxy_set_header X-Real-Ip $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_pass http://apps.sinolulin.cn:8070/app;
        }
    * */
    proxy: {
      '/app': {
        // 此处的写法，目的是为了 将 /api 替换成 https://www.baidu.com/
        target: 'http://apps.sinolulin.cn:8070/app',
        // 允许跨域
        changeOrigin: true,
        ws: true,
        pathRewrite: {
          '^/app': ''
        }
      }
    }
  },
  configureWebpack: (config) => {
    if (process.env.NODE_ENV === 'production' || process.env.NODE_ENV === 'localhost') {
      //npm install terser-webpack-plugin -D， 去掉console
      config.optimization.minimizer[0].options.terserOptions.compress.drop_console = true
      return {
        plugins: [
          new CompressionPlugin({
            test: /\.js$|\.html$|\.css/,
            threshold: 10240,
            deleteOriginalAssets: false
          })
        ]
      }
    }
  },
  productionSourceMap: false
}
